/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.imob.modelo;

import java.io.Serializable;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

/**
 *
 * @author Gilton Nascimento
 */
@Entity
@Table(name = "\"GRUPO\"", catalog = "imob", schema = "public")
@NamedQueries({
    @NamedQuery(name = "Grupo.findAll", query = "SELECT g FROM Grupo g"),
    @NamedQuery(name = "Grupo.findByGrupoId", query = "SELECT g FROM Grupo g WHERE g.grupoId = :grupoId"),
    
    @NamedQuery(name = "Grupo.findByGrupo", query = "SELECT g FROM Grupo g WHERE g.grupo = :grupo"),
    @NamedQuery(name = "Grupo.findLikeByGrupo", query = "SELECT g FROM Grupo g WHERE g.grupo Like :grupo"),
    
    @NamedQuery(name = "Grupo.findByGrupoDescricao", query = "SELECT g FROM Grupo g WHERE g.grupoDescricao = :grupoDescricao"),
    @NamedQuery(name = "Grupo.findLikeByGrupoDescricao", query = "SELECT g FROM Grupo g WHERE g.grupoDescricao Like :grupoDescricao")
    })
public class Grupo implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
//  <editor-fold defaultstate="collapsed" desc="Geradores de Sequencias">
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "SEQ_STORE")
    @SequenceGenerator(name = "SEQ_STORE", sequenceName = "next_grupo")// </editor-fold>
    @Basic(optional = false)
    @Column(name = "grupo_id", nullable = false)
    private Integer grupoId;
    @Basic(optional = false)
    @Column(name = "grupo", nullable = false, length = 45)
    private String grupo;
    @Column(name = "grupo_descricao", length = 100)
    private String grupoDescricao;
    @JoinColumn(name = "pessoa_id", referencedColumnName = "pessoa_id", nullable = false)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Pessoa pessoa;
    @JoinColumn(name = "empresa_id", referencedColumnName = "empresa_id", nullable = false)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Empresa empresa;

    public Grupo() {
    }

    public Grupo(Integer grupoId) {
        this.grupoId = grupoId;
    }

    public Grupo(String grup) {
    	grupo = grup;
    }
    
    public Grupo(String grup, String desc) {
    	this(grup);
    	grupoDescricao = desc;
    }
    
    public Grupo( Integer id, String gp, String desc ) {
    	this(gp, desc);
    	grupoId = id;
    }
    
    public Grupo(Integer grupoId, String grupo) {
        this.grupoId = grupoId;
        this.grupo = grupo;
    }


	public Integer getGrupoId() {
        return grupoId;
    }

    public void setGrupoId(Integer grupoId) {
        this.grupoId = grupoId;
    }

    public String getGrupo() {
        return grupo;
    }

    public void setGrupo(String grupo) {
        this.grupo = grupo;
    }

    public String getGrupoDescricao() {
        return grupoDescricao;
    }

    public void setGrupoDescricao(String grupoDescricao) {
        this.grupoDescricao = grupoDescricao;
    }

    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }

    public Empresa getEmpresa() {
        return empresa;
    }

    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }
    
    public Object[] getValues() {
    	Object[] objects = {grupoId, grupo, grupoDescricao};
    	return objects; 
    }


    @Override
    public int hashCode() {
        int hash = 0;
        hash += (grupoId != null ? grupoId.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        if (!(object instanceof Grupo)) {
            return false;
        }
        Grupo other = (Grupo) object;
        if ((this.grupoId == null && other.grupoId != null) || (this.grupoId != null && !this.grupoId.equals(other.grupoId))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.com.imob.modelo.Grupo[grupoId=" + grupoId + "]";
    }

}
